# !/bin/bash

CURRENT_DIR=$(
    cd "$(dirname "$0")"
    pwd
)

# 进入部署目录
cd ${CURRENT_DIR}

name=zbp-job-executor
jar=$name.jar

# 判断当前文件夹是否存在jar包
echo "检测new目录'$jar'文件是否存在"
if [ -f "$jar" ]; then
    echo "JAR文件存在,继续执行"
  else
    echo "JAR文件不存在，请先上传jar包到 new/ 目录下"
    exit
fi

# 回到上一级目录
cd ../

if which java > /dev/null; then
    echo "Java环境已安装"
else
    echo "未安装Java环境"
    exit
fi

BASE_PATH=$ZBP_BASE_PATH

if [[ -z "$ZBP_BASE_PATH" ]]; then
    echo "/etc/profile 中未配置 ZBP_BASE_PATH 变量"
    BASE_PATH="/data"
fi

echo "当前使用部署根路径为 $BASE_PATH"

echo "替换application.yml文件里 BASE_PATH 字符串"
sed -i "s|BASE_PATH|$BASE_PATH|" application.yml

echo "$(date)------- 开始关闭执行器服务 --------"
server_pid=$(netstat -anp|grep 15001|awk '{printf $7}'|cut -d/ -f1)
echo "$(date)-pid: $server_pid"
if [ "$server_pid" == "" ]
  then
    echo "$(date)------- 执行器服务未启动  --------"
 else
    echo "$(date)-TOMCAT PID: $server_pid"
    kill -9 "$server_pid"
    echo "$(date)------- 成功关闭执行器服务 --------"
fi

# 备份
echo "$(date)------- 备份 jar 包 --------"
cd bak
if [ -n "$(ls -A)" ]; then
  echo "清理多余备份文件"
  number=7
  success=0
  while (success=0)
  do
  delfile=`ls -l -crt jar.* | awk '{print $9 }' | head -1`
  count=`ls -l -crt jar.* | awk '{print $9 }' | wc -l`
  if [ $count -gt $number ]; then
     rm $delfile
     echo "删除最早生成的备份文件: $delfile"
  else
     success=1
     break;
  fi
  done
else
    echo "暂无备份文件，跳过清理"
fi
cd ..

# 判断当前文件夹是否存在jar包
echo "检测在使用中的'$jar'文件是否存在"
if [ -f "$jar" ]; then
    mv `pwd`/$jar `pwd`/bak/$jar.$(date "+%Y%m%d")
  else
    echo "当前是首次安装，跳过备份。"
fi

# 更新
echo "$(date)------- 更新 jar 包 --------"
mv `pwd`/new/$jar `pwd`/$jar

# 启动服务
echo "$(date)------- 启动执行器服务 --------"
nohup java -jar -server -Xmx2g $jar $name --spring.config.location=application.yml  > /dev/null 2>&1 &

echo "$(date)------- 执行器服务成功 --------"
